package collection;

import java.util.*;

/**
 * java.util.List
 * List接口继承自Collection
 * List代表的是可以存放重复元素且有序的集合
 * 常用实现类：
 * java.util.ArrayList:内部使用数组实现，查询性能更好
 * java.util.LinkedList:内部使用链表实现，首尾增删元素性能更好
 *
 * List集合提供了一套独有的方法，特点:可以通过下标进行操作元素
 */
public class ListDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //List<String> list = new LinkedList<>();

        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);//[one, two, three, four, five]
        /*
            return E get(int index)
            获取集合指定下标处的元素
         */
        //获取第3个元素
        String e = list.get(2);
        System.out.println(e);
        //普通for循环也可以遍历List集合
        for (int i = 0; i < list.size(); i++) {
            e = list.get(i);
            System.out.println(e);
        }

        /*
            return E    set(int index, E e)
            将给定元素e设置到指定位置index处，返回值为该位置原有元素。
         */
        String old = list.set(2,"six");
        System.out.println(list);//[one, two, six, four, five]
        System.out.println("被替换的元素是:"+old);//被替换的元素是:three

        //基于get/set操作, 将集合元素反转
        for (int i = 0; i < list.size()/2; i++) {
            //将正数位置的元素获取到
            String s = list.get(i);
            //将该元素设置到对应的倒数位置上
            s = list.set(list.size() - i - 1, s);
            //将原倒数位置的元素设置到整数位置上
            list.set(i, s);
        }
        System.out.println(list);//[five, four, six, two, one]

        //反转集合
        Collections.reverse(list);
        System.out.println(list);//[one, two, six, four, five]

    }
}
